
# 递归函数
"""
1. 概念 ：函数内部又调用自己的函数就是递归函数 ，递归函数必须又终止条件，否则就会报错。
2. 格式 ：
def funcA():
    ...
    funcA()
3. 使用场景 ：在于内部的业务代码，一直在做重复的事情 。
"""

# 需求 ： 求 1！ + 2！ + 3！ + 4！ + 5！
# 5！ = 5 * 4 * 3 * 2 * 1


# 定义一个普通的函数
def iterative_fact(n):
    result = 1
    for x in range(1,n+1):
        result *= x
    return result


# 使用递归实现
def fact(n):
    if n == 1:
        return 1
    return n * fact(n-1)


def sum_factorials(m):
    total = 0
    for x in range(1,m+1):
        total += iterative_fact(x)
    return total

res = iterative_fact(5)
print(res)
print(sum_factorials(5))

print("="*50)
print(fact(5))

# 实例2： 1，1，2，3，5，8，13，21，34，55，试判断数列第23个数是哪个？